(for Internet Explorer)
Sub  RegEnumValues( Path as string, out_Values as array of RegValueName )
指定のレジストリ・キーに入っている値を列挙します。
【引数】
Path
out_Values
レジストリのキーのパス
(出力) 値と型名の配列
ファイル:
System.vbs
Class  RegValueName
  Public  Name  as string
  Public  Type_ as string
End Class
  Dim  values

  RegEnumValues  "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\" + _
                 "CurrentVersion\Setup", values  '// Set "values"
サンプル:
(src)
Path の末尾に \ があってもなくても、キー(フォルダーのようなもの)を指定した
ことになります。
テスト
→ T_Reg.vbs
T_Reg1
Sub  RegExists( RegPath as string )
指定のレジストリ・キーか値が存在するかどうかを判定します。
【引数】
RegPath
レジストリのキーのパス
ファイル:
System.vbs
  If RegExists( "HKEY_CURRENT_USER\Software\_Test\" ) Then  Fail
サンプル:
Path の末尾が \ のときは、キーがあるかどうかを判定します。
Path の末尾が \ ではないときは、値があるかどうかを判定します。
(src)
Sub  IsRegEmptyKey( RegPath as string )
指定のレジストリ キーに、値もサブのキーもないかどうかを返します。
指定のレジストリ キーがないときは、False を返します。
→ vbslib.vbs
ソース
テスト
→ T_Reg.vbs
T_Reg1
Function  RegRead( Path as string ) as variant
との違いは、キーが見つからないときにエラーになるのではなく、
Empty を返すところです。
レジストリからリードします。
【引数】
返り値
値、または Empty
リードする場所。 キーへのパス+値の名前
Path
(src)
Path の最後に \ があると、キーの (規定) をリードします。
関連
(src)
Function  RegReadEx( Path as string, RegistryType as integer ) as variant
レジストリからリードします。 32/64 ビット用レジストリ対応。
【引数】
RegistryType
64=64ビット用レジストリ、32=32ビット用レジストリ
リードする場所。 キーへのパス+値の名前
Path
値、または Empty
返り値
echo  RegReadEx( "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+_
    "doxygen_is1\InstallLocation", 64 )
サンプル
Sub  RegExport( RegPath as string, OutFilePath as string, Opt as variant )
指定のレジストリ・キーに入っている値を .reg ファイルに出力します。
【引数】
RegPath
OutFilePath
レジストリのキーのパス
出力ファイルパス
ファイル:
System.vbs
Opt
オプション。 Empty か F_SubFolder
  RegExport  "HKEY_CURRENT_USER\Control Panel\Keyboard", _
             "keyboard.reg", F_SubFolder
サンプル:
(src)
テスト
→ T_Reg.vbs # T_RegExport
対応しているキーの型は、REG_SZ のみです。
Sub  RegWrite( Path as string, Value as string or integer, Type as string or Empty )
レジストリにライトします。
【引数】
Value
Type
値、または Empty(=値を消す)
値のタイプ, "REG_SZ", "REG_DWORD" など、または Empty(*1)
ライトする場所。 キーへのパス+値の名前
Path
Path によっては管理者権限が必要です
サンプル:
  RegWrite  "HKEY_CLASSES_ROOT\.ext\", "ExtSample", Empty
(src)
ファイル:
System.vbs
との違いは、エラーメッセージの内容です。
Path の最後に \ があると、キーの (規定) に設定します。
(*1) Type = Empty のときは、 Value の型によって自動的に型を判定します。
Sub  RegDelete( Path as string )
レジストリの値、またはキーを削除します。
Path の末尾が "\" のときは、キー(フォルダーのようなもの)を削除します。
サブ・キーや値があるときでも、削除できます。

値の名前に "\" を含むときは、
ただし、RegDelete でキーを削除するときは、そのキー(またはサブ・キー)が
持つ値の名前に "\" を含んでいても正しく処理します。
  RegDelete  "HKEY_CLASSES_ROOT\.svg\"
サンプル:
(src)
を使ってください。
→ T_Reg_Manually.vbs # T_FileAssocOpen
最後の T_FileAssocProg2.exe アンインストールで、値の名前に "\" を含む
値を持つキーを削除しています。
テスト
→ T_Reg_Manually.vbs # T_RegWriteRead
→ T_Reg.vbs
T_Reg1
レジストリファイル(*.reg)を編集します。
Dim  f : Set f = OpenForRegFile( "Sample.reg" )
If IsEmpty( f.RegRead( "HKEY_CLASSES_ROOT\.ext\" ) ) Then _
  f.RegWrite  "HKEY_CLASSES_ROOT\.ext\", "ExtSample", "REG_SZ"
f = Empty  '// Write
Function  OpenForRegFile( RegFilePath as string ) as EditRegFile
【引数】
RegFilePath
返り値
レジストリファイルのパス
EditRegFile オブジェクト
サンプル:
ランダムアクセスに対応しています。 OpenForRead や OpenForWrite のように
シーケンシャル(ファイルの先頭から順番)にアクセスする必要はありませんし、
変更しないキーまで Write する必要はありません。

存在しないキーを新規に Write したときは、シーケンシャル(RegWriteした順番)
にファイルに記述されます。 Empty の値を Write すると、そのキーは削除されます。

元々書かれていたコメントは保持されます。
テスト
→ T_Reg.vbs # T_RegFile
(src)
関連
Sample.reg
HKEY_CLASSES_ROOT\.ext\
ExtSample
レジストリファイル(*.reg)を編集します。 OpenForRegFile から取得できます。
メソッド
レジストリファイルからリードします。
レジストリファイルにライトします。
レジストリファイルを閉じます。 アクセスを終了します。
(src)
レジストリファイルを閉じます。 アクセスを終了します。
Sub  EditRegFile::Close()
デストラクタによっても自動的にファイルを閉じます。
閉じる前にエラーが発生してデストラクタが呼ばれたら、Write した内容は反映されません。
(src)
Sub  InstallRegistryFileOpen( Extension as string, ExePath as string, IsDefault as boolean )
ファイルをダブルクリックしたときに開くプログラムを設定します。(現在のユーザーのみ)
【引数】
Extension
ExePath
拡張子
プログラムの exe ファイルのパス。相対パス可。
IsDefault
True = ダブルクリックしたときに開く、 False = プログラムの選択に登録する
ファイル:
System.vbs
(src)
サンプル:
InstallRegistryFileOpen  ".svg", "Snap Note.exe", True
関連
ファイルの右クリック・メニュー
ダブルクリックしたときの設定解除
テスト
→ T_Reg_Manually.vbs # [T_FileAssocOpen]
参考
→ ファイルをダブルクリックしたときのコマンド
コマンドラインを指定して開くプログラムを設定する
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\
    FileExts\.<拡張子>\UserChoice\Hash
下記 Hash キーがあるときは、レジストリーの設定を直接設定しただけでは、「この種類の
ファイル (.<拡張子>)を開くには、どのアプリを使いますか?」が常に表示されるようになります。
セキュリティーの機能の可能性があります。 少なくとも、マクロソフト製品が使う拡張子は、
Hash キーができます。
Windows8 では、関連する設定に矛盾があると、「この種類のファイル (.<拡張子>)
を開くには、どのアプリを使いますか?」が常に表示されます。
→ 既定のプログラムの選択、プログラムから開く
マクロソフト製品(または、Windows インストーラーでインストールしたプログラム?)が使わない
拡張子には Hash キーができず、レジストリーの設定だけで関連付けすることができます。
などで、レジストリーの設定を元に戻してから、ファイルを右クリック [ プログラムから開く >
既定のプログラムの選択 ] を選んでください。
ダブルクリックしたときに開くプログラムを変更できるように戻すには、
Sub  UninstallRegistryFileOpen( Extension as string, ExePath as string )
ファイルをダブルクリックしたときに開くプログラムを設定解除します。(現在のユーザーのみ)
【引数】
Extension
ExePath
拡張子
プログラムの exe ファイルのパス。相対パス可。
ファイル:
System.vbs
(src)
サンプル:
UninstallRegistryFileOpen  ".svg", "Snap Note.exe"
関連
ダブルクリックしたときの設定
テスト
→ T_Reg_Manually.vbs # [T_FileAssocOpen]
Sub  InstallRegistryFileOpenCommand( Extension as string,
    ProgID as string, CommandLine as string, IsDefault as boolean )
ファイルをダブルクリックしたときに開くプログラムを設定します。(現在のユーザーのみ)
【引数】
Extension
ProgID
拡張子
プログラムの識別子
IsDefault
True = ダブルクリックしたときに開く、 False = プログラムの選択に登録する
ファイル:
System.vbs
InstallRegistryFileOpenCommand  ".svg", "Snap Note.exe", """Snap Note.exe"" ""%1""", True
関連
テスト
参考
→ ファイルをダブルクリックしたときのコマンド
コマンドライン
CommandLine
(src)
→ T_Reg_Manually.vbs # T_FileAssocOpen_OS_Exe
サンプル
サンプル
prompt_vbs = SearchParent( "vbslib Prompt.vbs" )
command_line = """%windir%\System32\cmd.exe"" /K (""%windir%\System32\cscript.exe"" //nologo """+_
    prompt_vbs +""" TranslateTest ""%1"" """")"
InstallRegistryFileOpenCommand  "trans", "TranslateTest", command_line, True
Sub  UninstallRegistryFileOpenCommand( Extension as string, ProgID as string )
ファイルをダブルクリックしたときに開くプログラムを設定解除します。(現在のユーザーのみ)
【引数】
Extension
ProgID
拡張子
プログラムの識別子
ファイル:
System.vbs
サンプル:
UninstallRegistryFileOpenCommand  ".svg", "Snap Note.exe"
関連
テスト
→ T_Reg_Manually.vbs # T_FileAssocOpen_OS_Exe
Sub  RegWriteOpenExt( Ext, KeyName, Explain, Command, Opt )
指定の拡張子の [開く(&O)] メニューのコマンドを登録します。
管理者権限が必要です
【引数】
KeyName
Explain
レジストリのキーの名前(英語)
タイプの説明に表示される内容
Command
実行するコマンドライン
Opt
通常 Empty
拡張子。先頭はピリオド。例:.ext
Ext
(src)
ファイル:
System.vbs
今まで関連付けられていた情報は失われます。
サンプル:
  RegWriteOpenExt  ".c", "cfile", "C Language source", _
    "C:\Windows\Notepad.exe ""%1""", Empty
.c ファイルをメモ帳で開くようにします。
廃止されました。 代わりは……
→ InstallRegistryOfFileOpen
Sub  InstallRegistryFileVerb( ProgID as string, Verb as string, Caption as string,
                              CommandLine as string )
ファイルの右クリック・メニューの1つの項目を追加します。(現在のユーザーのみ)
【引数】
ProgID
Verb
"*"、または RegReadExtProgID の返り値 (*1)
メニュー項目の識別子(英語)
Caption
右クリック・メニューに表示する文字列。(*2)
ファイル:
System.vbs
(src)
(*2)
& の次の文字は、右クリック・メニューを表示している状態で押すと選択できるキーボード
のキーになります。
CommandLine
コマンドライン。 %1 は、ファイルのパスに置き換わります。
(*1)
で、拡張子と現在関連付けられている ProgID を取得できます。
サンプル:
InstallRegistryFileVerb  RegReadExtProgID( "svg" ), "edit", "Snap Note (&Z)", _
  """"+ GetFullPath( "Snap Note.exe", Empty ) +""" ""%1"""
関連
右クリック・メニューの削除
ダブルクリックしたときの設定
拡張子と関連付けられている ProgID の取得
テスト
→ T_Reg_Manually.vbs # [T_FileAssocVerb]
参考
→ 右クリックして表示されるメニュー (特定の拡張子のファイル)
フォルダーに対する設定をするときは、ProgID="Folder" を指定してください。
すべてのファイルやフォルダーに対する設定をするときは、ProgID="*" を指定してください。
Sub  UninstallRegistryFileVerb( ProgID as string, Verb as string )
ファイルの右クリック・メニューの1つの項目を削除します。(現在のユーザーのみ)
(src)
【引数】
ProgID
Verb
"*"、または RegReadExtProgID の返り値 (*1)
メニュー項目の識別子(英語)
ファイル:
System.vbs
(*1)
で、拡張子と現在関連付けられている ProgID を取得できます。
サンプル:
InstallRegistryFileVerb  RegReadExtProgID( "svg" ), "edit"
関連
右クリック・メニューの追加
Sub  RegWriteAsterExt( KeyName, Caption, Command, Opt )
すべてのファイルに対するコンテキストメニューを追加登録します。
管理者権限が必要です
【引数】
KeyName
Caption
レジストリのキーの名前(英語)
コンテキストメニューに表示される内容
Command
実行するコマンドライン
Opt
通常 Empty
(src)
ファイル:
System.vbs
サンプル:
  '--- start of parameters for vbslib include -------------------------------
  g_admin = 1
     :
  '--- end of parameters for vbslib include ---------------------------------

Sub main()
  Dim  prog : prog = GetFullPath( "bz", Empty )
  RegWriteAsterExt  "bz", "bz (binary editor)", prog + "\bz.exe ""%1""", Empty
End Sub
廃止されました。 代わりは……
Function  RegReadExtProgID( Extension as string ) as string
拡張子と現在関連付けられている ProgID を取得します。(現在のユーザー)
(src)
関連
右クリック・メニューの追加
フォルダーに対応する ProgID は、"Folder" です。
(src)
Sub  MsiModify( MsiPath as string, TableName as string,
                KeyColumnName as string, ValueColumnNum as integer,
                Key as string, NewValue as string )
Windows 用のインストール・パッケージ(.msi)のデータベースを修正します。
【引数】
MsiPath
TableName
インストール・パッケージ(.msi)のファイルのパス
データベースのテーブル名
KeyColumnName
キーがある列の名前
NewValue
Key
ValueColumnNum
値がある列の番号(最初=1)
キーの名前
新しい値
→ Orca ツール、msi ファイルのデータベースの修正
参考
サンプル
Sub  Main( Opt, AppKey )
  Dim  msi_path : msi_path = "sample.msi"
  Dim  new_values : Set new_values = Dict(Array( "Utilities", "INSTALLDIR" ))
  Dim  key

  For Each key  In new_values.Keys
    MsiModify  msi_path, "Directory", "Directory", 2,  key,  new_values.Item( key )
  Next
End Sub
Function  get_WMI( ComputerName as string, ClassName as string ) as Object
WMI オブジェクトを返します。
【引数】
ComputerName
ClassName
コンピューター名。 Empty = ログオンしているコンピューター
WMI のクラス名
返り値
エラーコード、正常=0
参考
(src)
Function  GetPythonInstallPath() as string
Python がインストールされているフォルダーのパスを返します。
レジストリーの情報と、
の設定を元にしています。
ソース
→ vbslib.vbs
サンプル
    python_exe = GetPythonInstallPath() +"\python.exe"
    script_path = "C:\sample.py"
    RunProg  """"+ python_exe +""" """+ script_path +"""", ""
Sub  SetTargetPythonVersion( MinVer as integer, MaxVer as integer )
Python に関する機能の対象となるバージョンの範囲を設定します。
【引数】
MinVer
MaxVer
最小バージョン、または、Empty
最大バージョン、または、Empty
の動きが
本関数を呼び出すと、
変わります。
ソース
→ vbslib.vbs
Function  IsInstallPython() as boolean
Python がインストールされているかどうかを返します。
ソース
→ vbslib.vbs
Function  GetPerlVersion( Options as Empty ) as string
Perl がインストールされているか確認し、ActivePerl のバージョンを返します。
【引数】
Options
返り値
Empty を指定してください
スクリプト・エンジン名と、バージョン番号。 例:"5.16.3"
<ERROR err_number='0x80070002' err_description='Perl が見つからないか Perl に Path
が通っていません。Strawberry Perl や ActivePerl などをインストールしてください。'/>
Perl がインストールされていないと、下記のようなエラーになります。
サンプル
Perl が使えるかどうかをチェックする
GetPerlVersion  Empty
ソース
→ vbslib.vbs
参考
内部で
によって Perl スクリプトのホスト(.exe) のパスを検索します。
また、本関数の内部で、現在実行中のプロセスの環境変数 PATH に、Perl の exe ファイルがある
フォルダーを追加します。
→ ActivePerl
→ Strawberry Perl